package dao;

import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;

import conector.mysql;


public class equiposDao {

	static logs.generador logs = new logs.generador();
	private int valor;
	
	public ResultSet getAllEquipos(){
		String queryString ="SELECT * FROM clubs";
		ResultSet resultSet = mysql.queryObj(queryString);
		return resultSet;
	}
	
	public ResultSet getAllEquiposId(){
		String queryString ="SELECT id FROM equipos";
		ResultSet resultSet = mysql.queryObj(queryString);
		return resultSet;
	}
	
	public int countEquiposPorCompeticion(int id_categoria,int id_competicion,int temporada) throws SQLException{
		String queryString="SELECT COUNT(id) AS resultado FROM equipos WHERE id_categoria="+id_categoria+" AND id_competicion="+id_competicion+" AND temporada="+temporada;
		ResultSet resultSet = mysql.queryObj(queryString);
		while (resultSet.next()){
			int valor =  resultSet.getInt("resultado");
			return valor;
		}
		return 0;
	}
	
	public ResultSet getEquiposPorCategoriaCompeticion(int categoria,int competicion,int temporada) {
		String queryString ="SELECT * FROM equipos WHERE id_categoria="+categoria+" AND id_competicion="+competicion+" AND temporada="+temporada;
		ResultSet resultSet = mysql.queryObj(queryString);
		return resultSet;
	}
	
	/*
	 * 
	 * 
	 */
	
	public void crearTablaEquipos() throws IOException, SQLException{
		logs.escribir("EMPEZAMOS A CREAR LA TABLA EQUIPOS");
		String queryString = "CREATE TABLE equipos (id int(11) NOT NULL AUTO_INCREMENT,nombre varchar(75) COLLATE utf8_spanish_ci DEFAULT NULL,id_club int(11) DEFAULT NULL,id_categoria int(3) DEFAULT NULL,id_competicion int(3) DEFAULT NULL,temporada int(4) DEFAULT NULL,estado tinyint(1) DEFAULT NULL,PRIMARY KEY (id,id_club)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci";
		mysql.executeUpdate(queryString);
		logs.escribir("TABLA EQUIPOS CREADA");
	}
	
	public void insertarEquipo(String nombreClub,int codigoClub,int id_categoria,int id_competicion,int temporada) throws IOException, SQLException{
		String queryString = "INSERT INTO equipos(id,nombre,id_club,id_categoria,id_competicion,temporada,estado)"+
							 "VALUES (null,'"+nombreClub+"',"+codigoClub+","+id_categoria+","+id_competicion+","+temporada+",true);";
		mysql.executeUpdate(queryString);
	}


	public int getEquipoUnicoLocal(int id_categoria,int id_competicion,int temporada,int jornada) throws SQLException{
		
		String queryString=returnStringEquipoUnicoLocal(id_categoria,id_competicion,temporada,jornada);
		ResultSet resultSet = mysql.queryObj(queryString);

		while (resultSet.next()){
			valor =  resultSet.getInt("id_club");
			return valor;
		}
		return valor;
	}
	
	public int getEquipoUnicoVisitante(int equipoLocal,int id_categoria,int id_competicion,int temporada,int jornada) throws SQLException{
		String queryString=returnStringEquipoUnicoVisitante(equipoLocal,id_categoria,id_competicion,temporada,jornada);
		ResultSet resultSet = mysql.queryObj(queryString);

		while (resultSet.next()){
			valor =  resultSet.getInt("id_club");
			return valor;
		}
		return valor;
	}
	
	public String returnStringEquipoUnicoLocal(int id_categoria,int id_competicion,int temporada,int jornada){
		String queryString = "SELECT id_club FROM equipos t1 WHERE NOT EXISTS ( "+
														"SELECT id FROM partidos t2 "+
														"WHERE t1.id_club=t2.id_equipo_local "+
														"AND t1.id_categoria=t2.id_categoria "+
														"AND t1.id_competicion=t2.id_competicion "+
														"AND jornada= "+jornada+") "+ 
													"AND NOT EXISTS( "+
														"SELECT id FROM partidos t2 "+
														"WHERE t1.id_club=t2.id_equipo_visitante "+
														"AND t1.id_categoria=t2.id_categoria "+
														"AND t1.id_competicion=t2.id_competicion "+ 
														"AND jornada= "+jornada+") "+ 
													"AND t1.id_categoria="+id_categoria+ 
													" AND t1.id_competicion="+id_competicion+ 
													" AND t1.temporada ="+temporada+
													" LIMIT 1";
													//" ORDER BY RAND() LIMIT 1";
		//System.out.println(queryString);
		return queryString;
	}
	
	public String returnStringEquipoUnicoVisitante(int equipoLocal,int id_categoria,int id_competicion,int temporada,int jornada){
		String queryString = "SELECT id_club FROM equipos t1 "+
													"WHERE NOT EXISTS ( "+
														"SELECT id FROM partidos t2 "+
														"WHERE t1.id_club=t2.id_equipo_local "+
														" AND t1.id_categoria=t2.id_categoria "+
														"AND t1.id_competicion=t2.id_competicion "+
														"AND jornada= "+jornada+") "+ 
													"AND NOT EXISTS( "+
														"SELECT id FROM partidos t2 "+
														"WHERE t2.id_equipo_local= '"+equipoLocal+"'"+
														" AND t1.id_categoria=t2.id_categoria "+
														"AND t1.id_competicion=t2.id_competicion "+ 
														"AND jornada= "+jornada+") "+
													"AND NOT EXISTS( "+
														"SELECT id FROM partidos t2 "+
														"WHERE t1.id_club= '"+equipoLocal+"'"+
														" AND t1.id_categoria=t2.id_categoria "+
														"AND t1.id_competicion=t2.id_competicion "+ 
														"AND jornada= "+jornada+") "+
													"AND NOT EXISTS( "+
														"SELECT id FROM partidos t2 "+
														"WHERE t1.id_club=t2.id_equipo_visitante "+
														"AND t1.id_categoria=t2.id_categoria "+
														"AND t1.id_competicion=t2.id_competicion "+ 
														"AND jornada= "+jornada+") "+ 
													"AND NOT t1.id_club="+equipoLocal+	
													" AND t1.id_categoria="+id_categoria+ 
													" AND t1.id_competicion="+id_competicion+ 
													" AND t1.temporada ="+temporada+
													" LIMIT 1";
													//" ORDER BY RAND() LIMIT 1"; //cojo el equipo random 2 para que no sea igual al equipo local antes de haber hecho ningun insert en la tabla
		return queryString;
	}
	
}
